home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / obero / OberonAModules.lha / IFF.mod < prev    next >
Text File  |  1999-02-26  |  4KB  |  200 lines

  1. (*IFF.library 23.2 Module Translated from C and Modula2 Includes/Modules
  2.   By Morten Bjergstrøm
  3.   EMail: mbjergstroem@hotmail.com
  4.   $VER: 23.2 (3.9.97)
  5. *)
  6.  
  7. <*STANDARD-*>
  8. MODULE IFF;
  9.  
  10.  
  11. IMPORT
  12.   e:=Exec,Kernel,g:=Graphics;
  13.  
  14. CONST
  15.   IFFName*="iff.library";
  16.  
  17.  
  18.   (* Error codes (returned by IFFL_IFFError()) *)
  19.  
  20.   badTask* = -1;            (* IFFError() called by wrong task *)
  21.   cantOpenFile* = 16;       (* File not found *)
  22.   readError* = 17;          (* Error reading file *)
  23.   noMem* = 18;              (* Not enough memory *)
  24.   notIFF* = 19;             (* File is not an IFF file *)
  25.   writeError* = 20;         (* Error writing file *)
  26.   noILBM* = 24;             (* IFF file is not of type ILBM *)
  27.   noBMHD* = 25;             (* BMHD chunk not found *)
  28.   noBODY* = 26;             (* BODY chunk not found *)
  29.   tooManyPlanes* = 27;      (* Obsolete since V18.6 *)
  30.   unknownCompression* = 28; (* Unknown compression type *)
  31.   noANHD* = 29;             (* ANHD chunk not found *)
  32.   noDLTA* = 30;             (* DLTA chunk not found *)
  33.  
  34.   (*Generic IFF IDs*)
  35.   idFORM *   = 0464F524DH;  (* MakeID('F','O','R','M') *)
  36.   idPROP *   = 050524F50H;  (* MakeID('P','R','O','P') *)
  37.   idLIST *   = 04C495354H;  (* MakeID('L','I','S','T') *)
  38.   idCAT *    = 043415420H;  (* MakeID('C','A','T',' ') *)
  39.  
  40.   (*Specific IFF IDs*)
  41.   idANIM*    = 041787377H;
  42.   idANHD*    = 041784844H;
  43.   idILBM*    = 0494C424DH;
  44.   idBMHD*    = 0424D4844H;
  45.   idBODY*    = 0424F4459H;
  46.   idCAMG*    = 043414D47H;
  47.   idCLUT*    = 0434C5554H;
  48.   idCMAP*    = 0434D4150H;
  49.   idCRNG*    = 043524E47H;
  50.   idDLTA*    = 0444C5441H;
  51.   idSHAM*    = 05348414DH;
  52.  
  53.   id8SVX*    = 038535658H;
  54.   idATAK*    = 04154414BH;
  55.   idNAME*    = 04E414D45H;
  56.   idRLSE*    = 0524C5345H;
  57.   idVHDR*    = 056484452H;
  58.  
  59.  
  60.   (* Modes for IFFL_OpenIFF() *)
  61.   modeRead*  = 0;
  62.   modeWrite* = 1;
  63.  
  64.   (* Modes for IFFL_CompressBlock() and IFFL_DecompressBlock() *)
  65.   comprNone*     = 00000H; (*generic*)
  66.   comprByteRun1* = 00001H; (*ILBM*)
  67.   comprFibDelta* = 00101H; (*8SVX*)
  68.  
  69.  
  70. TYPE
  71.  
  72.   Chunk=RECORD
  73.     ckID*  :LONGINT;
  74.     ckSize*:LONGINT;
  75. (*    ckData*:ARRAY ckSize OF UByte; Hvorfor?*)
  76.   END;
  77.   ChunkPtr=POINTER TO Chunk;
  78.  
  79.  
  80.   BitMapHeader*=RECORD
  81.     w*               :e.UWORD;
  82.     h*               :e.UWORD;
  83.     x*               :INTEGER;
  84.     y*               :INTEGER;
  85.     nPlanes*         :e.UBYTE;
  86.     masking*         :e.UBYTE;
  87.     compression*     :e.UBYTE;
  88.     pad1*            :e.UBYTE;
  89.     transparentColor*:e.UWORD;
  90.     xAspect*         :e.UBYTE;
  91.     yAspect*         :e.UBYTE;
  92.     pageWidh*        :INTEGER;
  93.     pageHeight*      :INTEGER;
  94.   END;
  95.   BitMapHeaderPtr*=POINTER TO BitMapHeader;
  96.  
  97.  
  98.   AnimHeader*=RECORD
  99.     operation* :e.UBYTE;
  100.     mask*      :e.UBYTE;
  101.     w*         :e.UWORD;
  102.     h*         :e.UWORD;
  103.     x*         :INTEGER;
  104.     y*         :INTEGER;
  105.     absTime*   :e.ULONG;
  106.     relTime*   :e.ULONG;
  107.     interleave*:e.UBYTE;
  108.     pad0*      :e.UBYTE;
  109.     bits*      :e.ULONG;
  110.     pad*       :ARRAY 16 OF e.UBYTE;
  111.   END;
  112.   AnimHeaderPtr*=POINTER TO AnimHeader;
  113.  
  114.  
  115.  
  116. VAR
  117.   base-: e.LibraryPtr;
  118.  
  119.  
  120.  
  121. PROCEDURE OpenIFF* [base,-30]
  122.   (filename[8]:e.APTR)
  123.   :e.APTR;
  124.  
  125. PROCEDURE CloseIFF* [base,-36]
  126.   (ifffile[9]:e.APTR);
  127.  
  128. PROCEDURE FindChunk* [base,-42]
  129.   (ifffile  [9]:e.APTR;
  130.    chunkname[0]:LONGINT)
  131.   :e.APTR;
  132.  
  133. PROCEDURE GetBMHD* [base,-48]
  134.   (ifffile[9]:e.APTR)
  135.   :BitMapHeaderPtr;
  136.  
  137. PROCEDURE GetColorTab* [base,-54]
  138.   (ifffile[9]  :e.APTR;
  139.   colortable[8]:e.APTR)
  140.   :LONGINT;
  141.  
  142. PROCEDURE DecodePic* [base,-60]
  143.   (ifffile[9]:e.APTR;
  144.    bitmap [8]:g.BitMapPtr)
  145.   :BOOLEAN;
  146.  
  147. PROCEDURE SaveBitMap* [base,-66]
  148.   (filename   [8]:e.APTR;
  149.    bitmap     [9]:g.BitMapPtr;
  150.    colortable[10]:e.APTR;
  151.    flags      [0]:LONGINT)
  152.   :BOOLEAN;
  153.  
  154. PROCEDURE SaveClip* [base,-72]
  155.   (filename [8]:e.APTR;
  156.    bitmap   [9]:g.BitMapPtr;
  157.    coltab  [10]:e.APTR;
  158.    flags    [0]:LONGINT;
  159.    xoff     [1]:LONGINT;
  160.    yoff     [2]:LONGINT;
  161.    width    [3]:LONGINT;
  162.    height   [4]:LONGINT)
  163.   :BOOLEAN;
  164.  
  165. PROCEDURE IFFError* [base,-78]
  166.   ()
  167.   :LONGINT;
  168.  
  169. PROCEDURE GetViewModes* [base,-84]
  170.   (ifffile[9]:e.APTR)
  171.   :e.ULONG;
  172.  
  173. PROCEDURE NewOpenIFF* [base,-90]
  174.   (filename[8]:e.APTR;
  175.    type    [0]:LONGINT)
  176.   :e.APTR;
  177.  
  178. PROCEDURE ModifyFrame* [base,-96]
  179.   (modForm[9]:e.APTR;
  180.    bm     [8]:g.BitMapPtr)
  181.   :BOOLEAN;
  182.  
  183.  
  184.  
  185.  
  186. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  187.  
  188. BEGIN (* CloseLib *)
  189.   IF base # NIL THEN e.CloseLibrary (base) END
  190. END CloseLib;
  191.  
  192.  
  193. BEGIN
  194.  
  195.   base := e.OpenLibrary (IFFName, 0);
  196.  
  197.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END;
  198.  
  199. END IFF.
  200.